package com.wei.czz.framework.game.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.wei.czz.common.dto.common.NameValue;
import com.wei.czz.common.dto.game.FlowDto;
import com.wei.czz.common.dto.game.GameUserDto;
import com.wei.czz.common.po.game.GameUserPo;
import com.wei.czz.common.tool.PageDto;
import com.wei.czz.common.vo.common.UpdateStatusVo;
import com.wei.czz.common.vo.game.DeleteGameUserVo;
import com.wei.czz.common.vo.game.GameUserFormVo;
import com.wei.czz.common.vo.game.GameUserVo;
import com.wei.czz.framework.game.entity.GameUserEntity;

import java.util.List;

/**
 * Created by IntelliJ IDEA.
 *
 * @author wei
 * date: 2023-03-16 11:36:47
 * className: GameUserService 游戏用户请求服务接口
 * version: 1.0
 * description:
 */
public interface GameUserService extends IService<GameUserEntity> {

    /**
     * 保存游戏用户操作
     * @param gameUserVo 参数对象
     */
    void saveGameUser(GameUserVo gameUserVo);

    /**
     * 分页查询游戏用户列表操作
     * @param gameUserFormVo 参数对象
     * @return 游戏用户分页数据
     */
    PageDto<GameUserDto> pageGameUserList(GameUserFormVo gameUserFormVo);

    /**
     * 获取游戏用户列表操作
     * 只查询简单数据
     * @param gameId 游戏主键
     * @return 游戏用户列表
     */
    List<NameValue<String>> getSimpleGameUserList(Long gameId);

    /**
     * 获取游戏用户流水操作
     * @param id 游戏用户主键
     * @return 游戏用户流水列表
     */
    List<FlowDto> getGameUserFlowList(Long id);

    /**
     * 增加游戏用户可用次数操作
     * @param gameUserVo 参数对象
     */
    void incrementGameNum(GameUserVo gameUserVo);

    /**
     * 修改游戏用户状态操作
     * @param updateStatusVo 参数对象
     */
    void updateGameUserStatus(UpdateStatusVo updateStatusVo);

    /**
     * 增加用户游戏使用次数操作
     * @param gameUserPo 游戏用户对象
     */
    void addUseNum(GameUserPo gameUserPo);

    /**
     * 删除游戏用户操作
     * @param deleteGameUserVo 参数对象
     */
    void deleteGameUser(DeleteGameUserVo deleteGameUserVo);

}